#include <stdio.h>
#include<stdlib.h>

/* 全局变量声明 */
int a = 20;

int test(int,int); // 形参，只声明

int main ()
{
/* 在主函数中的局部变量声明 */
    int a = 10;
    int b = 20;
    int c = 0;
    int sum(int, int);
    //  函数的参数，形式参数，被当作该函数内的局部变量，如果与全局变量同名它们会优先使用
    printf ("value of a in main() = %d\n",  a);
    c = sum( a, b);
    printf ("value of c in main() = %d\n",  c);

    printf("%d",test(5,3)); // 实参，已赋值
    system("pause");


    return 0;
}

/* 添加两个整数的函数 */
int sum(int a, int b)
{
    printf ("value of a in sum() = %d\n",  a);
    printf ("value of b in sum() = %d\n",  b);
 
    return a + b;
}


int test(int a,int b) // 形参
{
    a=a+b;
    return a;
}

/*

C 语言中有三个地方可以声明变量：
    在函数或块内部的局部变量
    在所有函数外部的全局变量
    在形式参数的函数参数定义中

当局部变量被定义时，系统不会对其初始化，您必须自行对其初始化。
定义全局变量时，系统会自动对其初始化

int	0
char	'\0'
float	0
double	0
pointer	NULL

实参可以是变量，变量与表达式

在调用函数过程中发生的实参与形参之间的数据传递，常称为“虚实结合”
    在定义函数中制定的形参，在没有出现函数调用时不占用内存中的存储单元。在函数调用时才分配内存
    将实参的值传递给形参
    在执行函数时，由于形参已经有值。可以用形参进行运算。
    通过return语句将函数值返回，若无返回值，则无return
    调用结束后，形参被释放掉，实参保留原值（单向传值）
*/